#include <iostream>
#include "SortTestHelper.h"


/**
 * 选择排序
 *
 * @param arr
 * @param n
 */
template<typename T>
void selectionSort(T arr[], int n) {
    for (int i = 0; i < n; ++i) {

        //寻找[i, n)区间的最小值
        int minIndex = i;
        for (int j = i + 1; j < n; ++j) {
            if (arr[j] < arr[minIndex]) {
                minIndex = j;
            }
        }

        swap(arr[minIndex], arr[i]);
    }
}

int main() {

    //待测数据量
    int n = 10000;

    int *arr = SortTestHelper::generateRandomArray(n, 0, n);

    SortTestHelper::testSort("selection sort", selectionSort, arr, n);

    //清除new开辟的内存空间，防止内存泄漏
    delete[] arr;
    return 0;
}